//
//  HomeTableViewController.swift
//  SinaWeibo
//
//  Created by mac on 15/12/13.
//  Copyright © 2015年 mac. All rights reserved.
//
import UIKit
//在不同的项目中  需要导入命名空间
import AFNetworking
import SVProgressHUD

let HomeCellId = "HomeCellId"
class HomeTableViewController: BaseTableViewController {
    
    private lazy var statuses = [Status]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        if !userlogin{
            //再没有登录的情况下显示访客视图
            
        
        visitorLoginView?.setupInfo("登录后，别人评论你的微博，发给你的消息，都会在这里收到通知", imageName: nil)
            return
        }
        //设置 tableView
        prepareTabbleView()
        loadData()
    }
    
    
    private func  prepareTabbleView(){
        //注册 cell
        tableView.registerClass(StatusCell.self, forCellReuseIdentifier: HomeCellId)
        
        
     //修改 tableView 固定高度
        
        
        //设置预估行高 尽量接近真实的行高 能够提高效率
        //tableview 能够自动计算行高 关键的条件之一 就是 contentview 必须添加约束
        tableView.estimatedRowHeight = 300
        tableView.rowHeight = UITableViewAutomaticDimension
        tableView.separatorStyle = .None
        
        //获取系统的下拉刷新 
        refreshControl = UIRefreshControl()
        
        //绑定事件 
        refreshControl?.addTarget(self, action: "loadData", forControlEvents: .ValueChanged)
        
        //设置 tableView 的 tableFooterview
        tableView.tableFooterView = indicatorView
        
        
    }
    
    
    
   @objc private func loadData() {
    //使用 viewmodel 获取网络数据 
    var max_id : Int64 = 0
    var since_id :Int64 = 0
    //需要更具 小菊花是否正在转动 判断是否是上啦加载更多 
    if indicatorView.isAnimating() {
        //下拉加载更多数据 '
        max_id = statuses.last?.id ?? 0
        
    }else {
        since_id = statuses.first?.id ?? 0
        
    }
    StatusListViewModel.loadHomePageData(since_id,max_id :max_id) { (statues) -> () in
        //网络加载结束  关闭动画 
        self.refreshControl?.endRefreshing()
        
            guard let list = statues else {
                return
            }
        if since_id > 0 {
            //下拉刷新 新数据的操作 执行添家的操作
            self.statuses = list + self.statuses
        }else if max_id > 0 {
          //上拉加载更多数据
            self.statuses += list
            //数据加载完之后 应该结束动画  只能够加载一夜数据
            self.indicatorView.stopAnimating()
        }else{
            //首次加载
            self.statuses = list
        }
      self.tableView.reloadData()
   }
    
    }
 //懒加载小菊花 
    private lazy var indicatorView :UIActivityIndicatorView = {
        let i = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray)
        i.startAnimating()
        return i
    }()
    
    
}

// tableView 数据源协议方法
extension HomeTableViewController {
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statuses.count
    }

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier(HomeCellId, forIndexPath: indexPath)as! StatusCell
       // cell.textLabel?.text = statuses[indexPath.row].text
        cell.status = statuses[indexPath.row]
       // print("------------------------------------")
        //print(statuses[indexPath.row].imageURLs?.count)
        return cell
    }
}
